Circuit simulation is a critical aspect in the modern circuit design process. The design process is a highly interactive process where the designer uses the simulator to explore the circuit. It is important that the iterative exploration process of circuit design be as efficient and as natural as possible. It is during the design phase that the designer interactively runs a simulator to determine the effect of changes from various design parameters and component values on a circuit. Any tedious or repetitive actions required by the environment can distract the designer and therefore can result in a waste of the designer's time.
Simulation scripting languages are heavily used by some designers because they allow tedious repetitive tasks to be automated, thereby speeding up the simulation process. However, despite the appeal of scripting languages, many designers do not use them. One obvious reason for this is that languages must be learned before they can be used. This is a significant investment in time that many designers do not feel is justified. The reason is that scripts, once written, tend to be applicable only in the specific situation they were written for, and while it is possible to make them more generic, it generally requires considerable effort and expertise. Writing and keeping track of the many scripts needed can often result in more overhead than simply running the simulations interactively. Thus, unless a designer is doing exactly the same simulations over and over, as they would when doing library characterization, using simulation scripting languages provides a minimal true benefit.
Since, the design process is an iterative process of trial and error. It is common for designers to follow a promising path for hours, only to determine that it is a dead end. By this time, the designer may have lost track of all the changes made to the circuit and may have difficulty returning the circuit to its last good state.
Embodiments of the present invention provide methods and systems that create reusable and independent measurements for use with circuit simulators. Also disclosed are embodiments of parallelizable measurements having looping constructs that can be run without interference between parallel iterations. Reusability is enhanced by having parameterized measurements. Revisions and history of the operating parameters of circuit designs subject to simulation are tracked. Mechanisms are provided that allow for viewing, measurement or other manipulation of signals at specific locations in a circuit design for simulation, such as parameters that include observation points which are implemented using probes. One approach to executing a measurement is via a controllable and flexible control statement, which in one embodiment is the “run” statement. Improved interfaces for viewing, controlling, and manipulating simulations and simulation results are also provided. Embodiments of measurement aliases are also described herein.
The present disclosure also provides a method and mechanism for implementing a general purpose scripting language that supports parallel execution. In an embodiment, parallel execution is provided in a seamless and high-level approach rather than requiring or expecting a user to have low-level programming expertise with parallel processing languages/functions.
Other and additional objects, features, and advantages of the invention are described in the detailed description, figures, and claims.